package q777_canTransform;

public class Solution_1 {
    /*
    在LR字符串中交换相邻字符
    首先考虑L和R的相对顺序应该是相同的
    因此我们分别遍历两个字符串 比较不是X的字符
    如果start[i] != end[j] 代表字符串出现的位置不匹配 直接false
    如果相等，那么此时要考虑：
    如果是L 那么即使出现了交换 也有 i >= j
    如果是R 那么即使出现了交换 也有 i <= j
    否则false
    最后考虑i和j是否到达字符串末尾，如果没有，且还出现了非X的字符，那么仍然是false
     */
    public boolean canTransform(String start, String end) {
        int n = start.length();
        int i = 0, j = 0;
        while (i < n && j < n) {
            while (i < n && start.charAt(i) == 'X') {
                i++;
            }
            while (j < n && end.charAt(j) == 'X') {
                j++;
            }
            if (i < n && j < n) {
                if (start.charAt(i) != end.charAt(j)) {
                    return false;
                }
                char c = start.charAt(i);
                if ((c == 'L' && i < j) || (c == 'R' && i > j)) {
                    return false;
                }
                i++;
                j++;
            }
        }
        while (i < n) {
            if (start.charAt(i) != 'X') {
                return false;
            }
            i++;
        }
        while (j < n) {
            if (end.charAt(j) != 'X') {
                return false;
            }
            j++;
        }
        return true;
    }
}
